/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.sys.service;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.thinkgem.jeesite.common.constant.Constant;
import com.thinkgem.jeesite.common.service.CrudService;
import com.thinkgem.jeesite.common.utils.CacheUtils;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.sys.dao.DictDao;
import com.thinkgem.jeesite.modules.sys.entity.Dict;
import com.thinkgem.jeesite.modules.sys.utils.DictUtils;

/**
 * 字典Service
 * @author ThinkGem
 * @version 2014-05-16
 */
@Service
@Transactional(readOnly = true)
public class DictService extends CrudService<DictDao, Dict> {
	
	/**
	 * 查询字段类型列表
	 * @return
	 */
	public List<String> findTypeList(){
		return dao.findTypeList(new Dict());
	}

	@Transactional(readOnly = false)
	public void save(Dict dict) {
		super.save(dict);
		CacheUtils.remove(DictUtils.CACHE_DICT_MAP);
	}

	@Transactional(readOnly = false)
	public void delete(Dict dict) {
		super.delete(dict);
		CacheUtils.remove(DictUtils.CACHE_DICT_MAP);
	}
	
	public String getValueByLabel(String type,String label)
	{
		if(StringUtils.isBlank(type) || StringUtils.isBlank(label))
		{
			return null;
		}
		
		Dict dict = new Dict();
        dict.setType(type);
        dict.setLabel(label);
        List<Dict> groupTypes = findList(dict);
        if(null != groupTypes && groupTypes.size() == 1)
        {
        	return groupTypes.get(0).getValue();
        }
        
		// 组别判断
		if(Constant.Dict.DICT_GROUP_TYPE.equals(type))
		{
			if(label.startsWith("学前"))
			{
				return "1";
			}
			if(label.startsWith("小学A"))
			{
				return "2";
			}
			if(label.startsWith("小学B"))
			{
				return "3";
			}
			if(label.startsWith("小学C"))
			{
				return "4";
			}
			if(label.startsWith("初中"))
			{
				return "5";
			}
			if(label.startsWith("高中"))
			{
				return "6";
			}
			if(label.startsWith("青年"))
			{
				return "7";
			}
		}
		// 参赛方式判断
		if(Constant.Dict.DICT_JOIN_TYPE.equals(type))
		{
			if(label.startsWith("个人"))
			{
				return "1";
			}
			if(label.startsWith("组合"))
			{
				return "2";
			}
			if(label.endsWith("集体"))
			{
				return "3";
			}
		}
		
		return null;
	}
}
